/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.assembler.input;

import java.util.Iterator;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.client.om.IContratsRib;
import fr.generali.accueilclient.client.om.ICoordonneeBancaire;
import fr.generali.accueilclient.client.om.IPersonne;
import fr.generali.accueilclient.contrat.om.IConsultContrat;
import fr.generali.refservcommuns.rce.majliens.MajLiensClientsAdrRib;
import fr.generali.refservcommuns.rce.majliens.racine.DtoDossierRib;
import fr.generali.refservcommuns.rce.majliens.racine.DtoListeDossierS22;
import fr.generali.refservcommuns.rce.majliens.racine.DtoListeRib;
import fr.generali.refservcommuns.rce.majliens.racine.DtoNumeroContrat;

/**
 * @author selrhazala
 */
@Component("contratsRibToMajLiensClientsAdrRibConverter")
public class ContratsRibToMajLiensClientsAdrRibConverter implements Converter<IContratsRib, MajLiensClientsAdrRib> {

    /**
     * {@inheritDoc}
     */
    public MajLiensClientsAdrRib convert(IContratsRib input) {
        MajLiensClientsAdrRib majLiensClientsAdrRib = null;

        if (input != null) {
            majLiensClientsAdrRib = new MajLiensClientsAdrRib();
            DtoListeDossierS22 listeDossierS22 = new DtoListeDossierS22();
            DtoListeRib listeRib = new DtoListeRib();
            ICoordonneeBancaire currentRib = input.getRib();
            IPersonne currentClient = input.getClient();

            if (currentClient != null && currentRib != null) {
                for (Iterator<IConsultContrat> it = input.getListeContrats().iterator(); it.hasNext();) {
                    IConsultContrat consultContrat = it.next();

                    if (consultContrat.isRibSelected()) {
                        DtoDossierRib dossierRib = new DtoDossierRib();

                        DtoNumeroContrat numeroContrat = new DtoNumeroContrat();
                        numeroContrat.setIdentifiantContrat(consultContrat.getNumeroContrat());
                        numeroContrat.setCompagnie(consultContrat.getSocieteDuGroupe());
                        numeroContrat.setSystemeOrigine(consultContrat.getSystemeOrigine());
                        dossierRib.setNumeroContrat(numeroContrat);

                        dossierRib.setNumOrdre(currentRib.getNumOrdre());
                        dossierRib.setIdentifiantClient(currentClient.getNumeroClient());
                        dossierRib.setIdentifiantRib(currentRib.getIdentifiant());

                        // Usage de la référence bancaire (prélèvement = P //
                        // remboursement = R).
                        dossierRib.setUsage("P");

                        listeRib.getDossierRib().add(dossierRib);
                    }
                }
            }

            listeDossierS22.setListeDossierRib(listeRib);
            majLiensClientsAdrRib.setDtoListeDossierS22(listeDossierS22);

        }

        return majLiensClientsAdrRib;
    }

}
